#if !defined(termoinos_class)
#define termoinos_class

#include <string>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <map>
#include <fstream>
#include <algorithm>
#include <ctype.h>
#include "StringManager.h"
using namespace std;

typedef struct
{
	vector<long> frec;
} termFrecByDoc;


class Terminos
{
	private: 
		int cantidadTerminos;

	    map<string, termFrecByDoc> terminos;
	    map<string, char> StopWords;
	    vector<string> CharsToRemuve;
	    unsigned int currentDoc;

	    //int Biseccion(vector<string> pvector, string pTermino,int inicio,int largo);
		void cargarTerminos(string pArchvivoTerminos);
		void CargarStopWords();
		//void CargarCharsToRemuve();
		//string RemoveCharts(string termino);
		bool is_number(string s);
		vector<string> & split(string linea, vector<string> &elems);
	public:
			Terminos(string pArchvivoTerminos);
			Terminos();
			~Terminos();
			void cargarFreqTerminos(string pArchvivoTerminos);
			void setTermino (string pTermino);
			void setFrecuencia(string pTermino,long pNumDoc, long pFrec);
			void setCurrentDoc(unsigned int pNumDoc);
			void guardarEnArchivo(string pNombre);
			void ProsesarTerminos(string pLinea, string pModo);
			void ProsesarTerminosFull(string pLinea);
			void guardarTerminos(string pNombre);
			void guardarTerminosYFrecs(string pNombre);
			void incrementFrecuencia(string pTermino,long pNumDoc);
			void setTerminoOrIncrement (string pTermino,long pNumDoc);
			vector<double> getFrecVector(long pNumDoc);
			vector<string> getTermVector();

};

#endif
